Shader "Part2/surfDiffuse"//文件路径好找
{
	Properties
	{
		_MainTex ("Texture", 2D) = "white" {}
        _Center("Center",Vector) = (0,0,0,1)
        _Radius("Radius",Float) = 0.5
        _BandWidth("BandWidth",Float) = 0.2
	}
	SubShader
	{
		Tags { "RenderType"="Opaque" }
		LOD 100
		Pass
		{
			CGPROGRAM
			// #pragma vertex vert 
			// #pragma fragment frag
			// #include "UnityCG.cginc"

			#pragma surface surf Lambert //光照模型

			struct Input //自带的顶点数据
			{
				float4 vertex : COLOR;
                //一个模型最多传入8个纹理坐标
				float2 uv_MainTex;
                float worldPos;
			}

            //自己传进来的 声明类型
            sampler2D _MainTex;
            float4 _Center;
            float _Radius;
            float _BandWidth;

            void surf (Input IN, inout SurfaceOutput o)
            {
                // o.Albedo =1;
                float d = distance(_Center,IN.worldPos);
                if(d>=_Radius -0.2 && d<=_Radius +0.2 ){
                o.Albedo = 1;
                }
                else {
                o.Albedo = tex2D(_MainTex,IN.uv_MainTex);
                }
            }

			ENDCG
		}
	}
    // GeneratedFromSurfaceShader 是unity内置 
//fixed3 和 float3 是一样的
//fixed3 是高精度的  float3 是低精度的
//half是更优选择，fixed支持 -2 到 2 之间的数，fixed提高范围
//fixed打包后并行计算
}

//顶点修改器，vertex modifier
//顶点函数，vertex function